Elasticsearch Query DSL (Domain Specific Language) হলো Elasticsearch-এ ডেটা সার্চ এবং ফিল্টার করার জন্য একটি JSON ভিত্তিক ল্যাঙ্গুয়েজ। এটি একটি শক্তিশালী এবং নমনীয় টুল যা ব্যবহারকারীদের ডকুমেন্টের মধ্যে নির্দিষ্ট শর্ত, কিওয়ার্ড, এবং ফিল্টার ব্যবহার করে সার্চ অপারেশন চালাতে সহায়ক। Query DSL ব্যবহার করে বিভিন্ন ধরনের সার্চ এবং ফিল্টার তৈরি করা যায়, যেমন টার্ম সার্চ, ফুল-টেক্সট সার্চ, রেঞ্জ ফিল্টার, বুলিয়ান অপারেশন, এবং আরও অনেক কিছু। নিচে Elasticsearch Query DSL-এর বিস্তারিত ধারণা এবং এর উপাদানগুলো নিয়ে আলোচনা করা হলো।
Elasticsearch Query DSL মূলত দুটি প্রধান অংশে বিভক্ত: Leaf Query Clauses এবং Compound Query Clauses। এগুলো একত্রে ব্যবহার করে আরও জটিল এবং উন্নত সার্চ অপারেশন তৈরি করা যায়।
উদাহরণ:
{
"query": {
"term": {
"occupation": "engineer"
}
}
}
"term"
কন্ডিশনটি "occupation"
ফিল্ডে "engineer"
মান খুঁজে বের করছে।উদাহরণ:
{
"query": {
"bool": {
"must": [
{ "match": { "occupation": "software engineer" } }
],
"filter": [
{ "range": { "age": { "gte": 25, "lte": 35 } } }
]
}
}
}
"bool"
কন্ডিশন ব্যবহার করে "must"
ক্লজে "occupation"
ফিল্ডে "software engineer"
টার্ম খোঁজা হচ্ছে এবং "filter"
ক্লজে "age"
ফিল্ডে বয়সের রেঞ্জ (২৫ থেকে ৩৫) ফিল্টার করা হচ্ছে।{
"query": {
"match": {
"description": "open source software"
}
}
}
"description"
ফিল্ডে "open source software"
টার্মটি খোঁজা হচ্ছে।term কন্ডিশন নির্দিষ্ট ফিল্ডের সুনির্দিষ্ট মান খুঁজে বের করতে ব্যবহৃত হয়। এটি সাধারণত স্ট্রাকচারড ডেটার জন্য প্রযোজ্য, যেমন সংখ্যা, তারিখ, বা কিওয়ার্ড।
{
"query": {
"term": {
"status": "active"
}
}
}
"status"
ফিল্ডে "active"
মান খোঁজা হচ্ছে।{
"query": {
"range": {
"salary": {
"gte": 50000,
"lte": 100000
}
}
}
}
"salary"
ফিল্ডে ৫০,০০০ থেকে ১,০০,০০০ এর মধ্যে থাকা ডকুমেন্টগুলো ফিল্টার করা হচ্ছে।{
"query": {
"bool": {
"must": [
{ "match": { "occupation": "developer" } }
],
"should": [
{ "match": { "skills": "Java" } },
{ "match": { "skills": "Python" } }
],
"must_not": [
{ "term": { "status": "inactive" } }
]
}
}
}
"must"
ক্লজে "occupation"
ফিল্ডে "developer"
থাকতে হবে, "should"
ক্লজে "skills"
ফিল্ডে "Java"
বা "Python"
টার্ম থাকতে পারবে, এবং "must_not"
ক্লজে "status"
ফিল্ডে "inactive"
না থাকতে হবে।*
এবং ?
প্যাটার্ন ব্যবহার করা হয়।{
"query": {
"wildcard": {
"username": "jo*"
}
}
}
"username"
ফিল্ডে "jo"
দিয়ে শুরু হওয়া সমস্ত মান খোঁজা হচ্ছে।{
"query": {
"fuzzy": {
"name": "jon"
}
}
}
"name"
ফিল্ডে "jon"
, "john"
, অথবা এর কাছাকাছি মিল খুঁজে বের করবে।Elasticsearch Query DSL একটি শক্তিশালী এবং নমনীয় সার্চ ল্যাঙ্গুয়েজ, যা ব্যবহারকারীদের সুনির্দিষ্ট কন্ডিশন এবং কিওয়ার্ড ব্যবহার করে সার্চ অপারেশন চালাতে সহায়ক। Leaf Query এবং Compound Query-এর মাধ্যমে বিভিন্ন ধরনের এবং উন্নত সার্চ অপারেশন তৈরি করা যায়। Query DSL-এর সাহায্যে Elasticsearch-এ দ্রুত এবং কার্যকরীভাবে ডেটা সার্চ এবং ফিল্টার করা সম্ভব।
আরও দেখুন...